import wx

# 自定义窗口类
class MyFrame(wx.Frame):
    def __init__(self, parent, title):
        super().__init__(parent, title=title, size=(800, 600))
        # 创建一个面板
        self.panel = wx.Panel(self)
        # 最常用的盒子布局管理器
        # 水平方向
        # vbox = wx.BoxSizer(wx.HORIZONTAL)
        # 垂直方向
        vbox = wx.BoxSizer(wx.VERTICAL)
        # 将盒子布局管理器设置为面板的布局管理器
        self.panel.SetSizer(vbox)

        # 创建一个标签
        self.label = wx.StaticText(self.panel, label="Hello, wxPython!")
        # 创建一个按钮
        self.button = wx.Button(self.panel, label="点击我")
        # 绑定按钮事件
        self.button.Bind(wx.EVT_BUTTON, self.on_button_click)
        # 将控件添加到盒子布局管理器中
        vbox.Add(self.label, 0, wx.ALL | wx.LEFT, 5)
        vbox.Add(self.button, 0, wx.ALL | wx.LEFT, 5)
        for i in range(0):
            # 给按钮绑定事件
            vbox.Add(wx.Button(self.panel, label=f"按钮{i}"), 0, wx.ALL | wx.LEFT, 5)

        # 垂直的盒子中嵌套一个水平的盒子
        for i in range(10):
            hbox = wx.BoxSizer(wx.HORIZONTAL)
            for i in range(10):
                b = wx.Button(self.panel, label=f"按钮{i}")
                b.Bind(wx.EVT_BUTTON, self.on_button_click)
                hbox.Add(b, 0, wx.ALL | wx.LEFT, 5)
            vbox.Add(hbox, 0, wx.ALL | wx.LEFT, 5)

    # 绑定按钮事件
    def on_button_click(self, event):
        # 判断self 是否是Button
        if isinstance(event.GetEventObject(), wx.Button):
            print(event.GetEventObject().GetLabel())

        if isinstance(self, wx.Button):
            print(self.GetLabel())

        self.label.SetLabel("按钮被点击了")

        print("按钮被点击了")




if __name__ == "__main__":
    # 创建一个应用程序
    app = wx.App()
    # 创建一个窗口
    frame = MyFrame(None, title="Hello, wxPython!")
    # 显示窗口
    frame.Show()
    # 运行应用程序
    app.MainLoop()
